<?php

/**
 * 二维数组根据某个字段进行分组
 * @param $arr
 * @param $key //要分组的字段, 例如 parent_id
 * @param string $col_id //每个元素的key
 * @return array
 * User: sx DateTime: 2020/10/29 10:46
 */
function array_group_by($arr, $key, $col_id = 'id'){
    $grouped = array();
    foreach ($arr as $value) {
        $grouped[$value[$key]][$value[$col_id]] = $value;
    }
    if (func_num_args() > 2) {
        $args = func_get_args();
        foreach ($grouped as $key => $value) {
            $parms = array_merge($value, array_slice($args, 2, func_num_args()));
            $grouped[$key] = call_user_func_array('array_group_by', $parms);
        }
    }
    return $grouped;
}